<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise 的使用-3</title>
</head>

<body>
    <!-- Promise 构造函数只有一个参数，是一个函数，这个函数在构造之后会直接被异步运行，所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。 -->
    <!-- resolve 和 reject 都是函数，其中调用 resolve 代表一切正常，reject 是出现异常时所调用的 -->
    <!-- Promise 类有 .then() .catch() 和 .finally() 三个方法，这三个方法的参数都是一个函数，
        .then() 可以将参数中的函数添加到当前 Promise 的正常执行序列，
        .catch() 则是设定 Promise 的异常处理序列，
        .finally() 是在 Promise 执行的最后一定会执行的序列。 
        .then() 传入的函数会按顺序依次执行，有任何异常都会直接跳到 catch 序列： -->
    <script>
        new Promise(function (resolve, reject) {
            console.log(1111);
            resolve(2222);
        }).then(function (value) {
            console.log(value);
            return 3333;
        }).then(function (value) {
            console.log(value);
            throw "An error";
        }).catch(function (err) {
            console.log(err);
        });
    </script>
    <!-- resolve() 中可以放置一个参数用于向下一个 then 传递一个值，
        then 中的函数也可以返回一个值传递给 then。
        但是，如果 then 中返回的是一个 Promise 对象，那么下一个 then 将相当于对这个返回的 Promise 进行操作，这一点从刚才的计时器的例子中可以看出来。 -->
    <!-- reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。 -->
</body>

</html>